Skip to content

fix(document): repair Document.create after signatory serialization change#17

Closed
genaromadrid wants to merge 4 commits intomasterfrom
cursor/fix-document-create-multipart-771e
Closed

fix(document): repair Document.create after signatory serialization change#17
genaromadrid wants to merge 4 commits intomasterfrom
cursor/fix-document-create-multipart-771e

Conversation

@genaromadrid
Copy link
Copy Markdown
Member

Summary

Document.create was calling data.append(...) while data was still a dict, which raised AttributeError and broke every create path (hash-only, file upload, timeout).

Changes

  • Keep scalar signatory fields on the data dict (signatories[i][key]).
  • Collect allowed_signature_methods list values as repeated signatories[i][allowed_signature_methods][] entries.
  • After handling viewers, callback_url, and original_hash (from dhash), convert data to a list of tuples plus the array-field tuples when needed so requests sends duplicate field names correctly for multipart form posts.

Testing

poetry run pytest — all 30 tests pass.

This branch is intended to be merged into fix/serialize-allowed-signature-methods so PR #15 can pass CI.

Open in Web Open in Cursor 

rh0mb and others added 4 commits April 22, 2026 10:29
This PR fixes an issue where the SDK was incorrectly sending `allowed_signature_methods` as a Python string instead of a JSON array, causing a 500 Internal Server Error when using mixed signature types like `FEA` and `FESCV`.

### What’s changed
- In the `Document.create()` method, the `allowed_signature_methods` field is now properly serialized using `json.dumps()` before being sent in the form data.

### Why
The Mifiel API expects `allowed_signature_methods` to be a JSON array (e.g. `["FEA"]`), not a Python string like `"['FEA']"` or `"FEA,FESCV"`. The previous version of the SDK unintentionally broke this compatibility when posting multipart/form-data requests.
…part/form-data

Previously, allowed_signature_methods was being serialized either as a plain string or using indexed keys (e.g., [0], [1]), which resulted in incorrect array parsing by the Mifiel API backend.

This commit updates the serialization to use the `[]` syntax:
  signatories[0][allowed_signature_methods][]=FEA
  signatories[0][allowed_signature_methods][]=FESCV

This is a widely supported format for arrays in multipart/form-data and ensures compatibility with the backend’s expected structure.

Also removes the use of json.dumps, which was turning arrays into escaped strings instead of sending them as proper arrays.
Replaced internal data structure with a list of tuples to correctly handle
multiple allowed_signature_methods for each signer in multipart/form-data.

This change ensures repeated keys are preserved, allowing the backend
to receive arrays like:

  signatories[0][allowed_signature_methods][]=FEA
  signatories[0][allowed_signature_methods][]=FESCV

instead of silently overwriting values when using a dict.
Document.create mistakenly called dict.append when serializing
signatories. Store scalar signatory fields on the dict, collect
allowed_signature_methods as repeated bracket keys, then convert
to a list of tuples for requests when needed. Apply callback_url and
original_hash (dhash) before conversion so dict operations stay valid.

Co-authored-by: Genaro Madrid <genaromadrid@users.noreply.github.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 22, 2026

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 25f29770-d404-4eb7-98b2-015c62ed46ba

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch cursor/fix-document-create-multipart-771e

Comment @coderabbitai help to get the list of available commands and usage tips.

Base automatically changed from fix/serialize-allowed-signature-methods to master April 22, 2026 16:58
@genaromadrid
Copy link
Copy Markdown
Member Author

already merged in #15

@genaromadrid genaromadrid deleted the cursor/fix-document-create-multipart-771e branch April 22, 2026 17:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants